package com.zh.creature;

import com.zh.Scene;
import com.zh.article.DrugSet;
import com.zh.article.SpecialSkill;
import com.zh.article.Weapon;
import com.zh.article.WeaponSet;
import com.zh.room.Room;

/**
 * @description:
 * @author: zhangHang
 * @date: Created in 2020/4/27 10:16
 * @version: 1.0
 * @modified By:
 */
public abstract class Creature {
    private String id;
    private String description;
    private int HpValue;
    private Room currentRoom;
    private Weapon currentWeapon;
    private SpecialSkill specialSkills;//一个生物的特殊技能（目前设置为一个，不加上特殊技能的集合）
    private WeaponSet weaponSet = new WeaponSet();//一个生物应该有这些集合
    private DrugSet drugSet = new DrugSet();

    public Creature(String id, String description, int hpValue, Weapon currentWeapon) {
        this.id = id;
        this.description = description;
        this.HpValue = hpValue;
        this.currentWeapon = currentWeapon;
    }

    public Creature(){

    }

    public abstract void useWeapon(Weapon weapon, Creature targetCreature, Scene scene);

    public abstract void pickWeapon(String id);

    public abstract void changeWeapon(String id);

    public abstract void pickDrug(String id);

    public abstract void useDrug(String id);

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public int getHpValue() {
        return HpValue;
    }

    public void setHpValue(int hpValue) {
        HpValue = hpValue;
    }

    public Weapon getCurrentWeapon() {
        return currentWeapon;
    }

    public void setCurrentWeapon(Weapon currentWeapon) {
        this.currentWeapon = currentWeapon;
    }

    public Room getCurrentRoom() {
        return currentRoom;
    }

    public void setCurrentRoom(Room currentRoom) {
        this.currentRoom = currentRoom;
    }

    public WeaponSet getWeaponSet() {
        return weaponSet;
    }

    public void setWeaponSet(WeaponSet weaponSet) {
        this.weaponSet = weaponSet;
    }

    public DrugSet getDrugSet() {
        return drugSet;
    }

    public void setDrugSet(DrugSet drugSet) {
        this.drugSet = drugSet;
    }

    public SpecialSkill getSpecialSkills() {
        return specialSkills;
    }

    public void setSpecialSkills(SpecialSkill specialSkills) {
        this.specialSkills = specialSkills;
    }
}
